#include "database.h"

DataBase::DataBase(const char* dbName) : m_dbName(dbName)
{
    m_db = QSqlDatabase::addDatabase("QSQLITE");
    m_db.setDatabaseName(m_dbName);
    m_db.open();

    if( !m_db.isOpen() )
    {
        throw DBException("Can't open database", m_db.lastError().number());
    }
}

/**
 * Supprime le fichier contenant la base de données.
 */
void DataBase::deleteFile()
{
    if(m_db.isOpen())
    {
        close();
    }
    QFile::remove(m_dbName);
}

/**
 * Ferme la base de données.
 */
void DataBase::close()
{
    m_db.close();
}

/**
 * Exécute et renvoie une requête passée en argument.
 */
QSqlQuery DataBase::exec(QString request)
{
    QSqlQuery query = m_db.exec(request);
    query.setForwardOnly(true);
    return query;
}

/**
 * Renvoie une requête pouvant être exécutée sur la base de donnée.
 */
QSqlQuery DataBase::prepareQuery(QString request)
{
    QSqlQuery query(m_db);
    query.setForwardOnly(true);
    query.prepare(request);
    return query;
}

/**
 * Renvoie le code de la dernière erreur ayant eu lieu sur la base de donnée
 */
int DataBase::lastError()
{
    return m_db.lastError().number();
}
